namespace org.jawk.backend
{
	/// <summary>Compile a Jawk script.</summary>
	/// <remarks>
	/// Compile a Jawk script.  The target machine can be any actual or virtual
	/// machine.  If a compiler implementation is provided upon the release of
	/// Jawk, the compiler targets the JVM.
	/// </remarks>
	/// <param name="tuples">The tuples containing the intermediate code.</param>
	public interface IAwkCompiler
	{
		/// <summary>
		/// Traverse the tuples, translating tuple opcodes and arguments
		/// to target machine code.
		/// </summary>
		/// <remarks>
		/// Traverse the tuples, translating tuple opcodes and arguments
		/// to target machine code.
		/// </remarks>
		/// <param name="tuples">The tuples to compile.</param>
		void Compile(org.jawk.intermediate.AwkTuples tuples);
	}
}
